home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ABUSESRC.ZIP
/
AbuseSrc
/
macabuse
/
inc
/
view.hpp
< prev
Wrap
C/C++ Source or Header
|
1997-05-20
|
4KB
|
137 lines
#ifndef _VIEW_HPP_
#define _VIEW_HPP_
#include "light.hpp"
#include "jwindow.hpp"
class object_node;
class game_object;
class area_controller;
struct suggest_struct
{
long cx1,cy1,cx2,cy2,shift_down,shift_right,pan_x,pan_y;
long new_weapon;
uchar send_view,send_weapon_change;
} ;
class view;
class view
{
uchar keymap[512/8];
char chat_buf[60];
public :
int key_down(int key) { return keymap[key/8]&(1<<(key%8)); }
void set_key_down(int key, int x) { if (x) keymap[key/8]|=(1<<(key%8)); else keymap[key/8]&=~(1<<(key%8)); }
void reset_keymap() { memset(keymap,0,sizeof(keymap)); }
void add_chat_key(int key);
char name[100];
struct suggest_struct suggest;
long cx1,cy1,cx2,cy2, // view area to show
shift_down,shift_right; // shift of view
int god; // :) if you believe in such things
int player_number;
int draw_solid; // -1 if don't draw solid
long *weapons; // [0..total_weapons-1]
long *last_weapons; // last history of above array (for updating statbar)
long current_weapon;
game_object *focus; // object we are focusing on (player)
int x_suggestion, // input from the player at the current time
y_suggestion,
b1_suggestion,
b2_suggestion,
b3_suggestion,
b4_suggestion,
pointer_x,
pointer_y,
freeze_time;
short ambient; // ambient lighting setting, used by draw
long pan_x,pan_y,no_xleft,no_xright,no_ytop,no_ybottom,
last_x,last_y,last_last_x,last_last_y,view_percent;
long last_left,last_right,last_up,last_down, // how many frames ago were these pressed (<=0)
last_b1,last_b2,last_b3,last_b4,last_hp,last_ammo,last_type;
long secrets,kills,tsecrets,tkills;
view(game_object *Focus, view *Next, int number);
void draw_character_damage(); // draws the characters 'status' on the viewer
long x_center(); // center of attention
long y_center();
long xoff(); // top left and right corner of the screen
long interpolated_xoff();
long yoff();
long interpolated_yoff();
int drawable(); // network viewables are not drawable
int local_player(); // just in case I ever need non-viewable local players.
view *next; // next viewable player (singly linked list)
void get_input();
int process_input(char cmd, uchar *&pk);
void add_ammo (int weapon_type, int total);
int has_weapon (int weapon_type) { return god || (weapons[weapon_type]!=-1); }
void give_weapon(int weapontype);
int weapon_total(int weapon_type);
void note_upkey();
void note_downkey();
int handle_event(event &ev);
void update_scroll();
void draw_hp();
void draw_ammo();
void draw_logo();
void resize_view(long Cx1, long Cy1, long Cx2, long Cy2);
void set_input(int cx, int cy, int b1, int b2, int b3, int b4, int px, int py);
int view_changed() { return suggest.send_view; }
int weapon_changed() { return suggest.send_weapon_change; }
void next_weapon();
void last_weapon();
void reset_player();
int receive_failed() { return focus==NULL; }
long get_view_var_value(int num);
long set_view_var_value(int num, long x);
void configure_for_area(area_controller *a);
void set_size()
{
cx1=0;
cx2=319;
cy1=0;
cy2=199-34;
}
~view();
} ;
extern view *player_list;
void set_local_players(int total);
int total_local_players();
void recalc_local_view_space();
void process_packet_commands(uchar *pk, int size);
object_node *make_player_onodes(int player_num=-1);
int total_view_vars();
char *get_view_var_name(int num);
ushort make_sync();
#endif